home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 2
/
Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso
/
Aminet
/
dev
/
amos
/
ldosv25d.lha
/
ldos_demo
/
examples
/
ldos
/
Lrecursive.AMOS
/
Lrecursive.amosSourceCode
Wrap
AMOS Source Code
|
1992-03-22
|
3KB
|
93 lines
Set Buffer 200
_MAX=1500
Dim NAME$(_MAX) : Rem Enough for 500 names
'Follow F$,A$,ST
Screen Open 1,640,256,2,Hires : Paper 0 : Clw
Palette ,$FF
Global ST,NUM,NAME$()
Reserve As Work 10,264*20 : Rem Enough for 20 lcat pushes
ST=Start(10)-264
Input "Dir :";ROOT$
Proc RECURSIVE[ROOT$]
Print : Print "Sorting..."
Sort NAME$(0)
Dec NUM
LO=_MAX-NUM
Clw
For I=LO To LO+NUM
Print NAME$(I); : Locate 50,
Proc IDENT[NAME$(I)]
Inc LINE
If LINE mod 20=0 Then Wait Key
Next I
End
Procedure RECURSIVE[F$]
D$=Right$(F$,1)
If Not((D$=":") or(D$="/")) Then F$=F$+"/"
A$= Extension_10_00FC(F$)
Cline : Centre "Scanning: "+F$ : Print : Cup
NAME$(NUM)=F$ : Inc NUM
Do
A$= Extension_10_010E
Exit If A$=""
If Extension_10_011E >0
D$=Right$(F$,1)
ST=ST+264
Extension_10_047E ST
Proc RECURSIVE[F$+A$]
Extension_10_048E ST
ST=ST-264
End If
If Extension_10_011E <0
NAME$(NUM)=F$+A$ : Inc NUM
End If
Loop
End Proc
Procedure IDENT[S$]
' Doesn't handle national chars in ASCII-files...
' Currently no real support for keymaps in AMOS
LAN= Extension_10_0182(S$)
LON=30 : _A=-1 : If LAN<LON Then Print "Length < 30 bytes" : Pop Proc
Open In 1,D$+S$ : A$=Input$(1,LON) : Close 1 : T=Leek(Varptr(A$))
T$=Left$(A$,4)
If Instr(A$,"AMOS Basic V")<>0 Then Print "AMOS SOURCE CODE FILE" : Pop Proc
If Left$(A$,3)="ZOO" Then Print "ZOO ARCHIVE FILE" : Pop Proc
For I=1 To Len(A$) : A=Asc(Mid$(A$,I,1))
If(A<20) or(A>126)
If Not(A=9 or A=10 or A=13)
_A=0
End If
End If
Next I
If _A Then Print "ASCII FILE" : Pop Proc
If T=$E3100001 Then Print "ICON FILE" : Pop Proc
If T=$3F3 Then Print "EXE FILE" : Pop Proc
If T=$3E7 Then Print "LINKER OBJECT FILE" : Pop Proc
If T=$464F524D Then Print "IFF FILE - ";Mid$(A$,9,4) : Pop Proc
If T=$F34C0012 Then Print "'.info' FILE" : Pop Proc
If T=$400002 Then Print "WB2.0 PATTERN FILE" : Pop Proc
If(T and $FFFFFFF8)=$F000000 Then Print "FONT FILE " : Pop Proc
If Mid$(A$,3,3)="-lh"
Print "LHARC ARCHIVE FILE (";Mid$(A$,4,3);")"
Pop Proc
End If
If T=$504B0304 Then Print "ZIP ARCHIVE FILE" : Pop Proc
If T=$12031990 Then Print "AMOS PACKED IFF PIC" : Pop Proc
If T$="AmSp" Then Print "AMOS .ABK FILE SPRITE" : Pop Proc
If T$="AmIc" Then Print "AMOS .ABK FILE ICON" : Pop Proc
If T$="AmBk" Then Print "AMOS .ABK FILE ";Mid$(A$,13,8) : Pop Proc
If T=$8080C00A Then Print "WORD PERFECT .DOC FILE" : Pop Proc
If T$="PP20" Then Print "PowerPacked DATA FILE" : Pop Proc
If(T and $FFFF0000)=$23690000 Then Print "Vector font (PPM?)" : Pop Proc
If(T and $FF)=$40 Then Print "SuperBase .SBF file" : Pop Proc
If T=$46454446 Then Print "SuperBase .SBV file" : Pop Proc
If(T and $FFFFFF00)=$53425000 Then Print "SuperBase .SBP file" : Pop Proc
If(T=0) and(LAN mod 512=0) Then Print "Possible SuperBase data file" : Pop Proc
If T=$46433134 or T=$534D4F44 Then Print "Future Composer MODULE" : Pop Proc
If T$="SYNT" Then Print "Possible SYNTHsound instrument (FC1.4)" : Pop Proc
If(T$="MMD0") or(T=$4D454404) Then Print "MED MODULE" : Pop Proc
If T=$1000000 Then Print "ADPro C.file" : Pop Proc
If(T=$440001) or(T=$80001001) Then Print "CG-font file" : Pop Proc
If T=$C000000 Then Print "NComm cfg-file" : Pop Proc
Print "UNKNOWN (header=";Hex$(T);")"
End Proc